package StudentManagerSystem1;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class ForgetPassword {
    public ForgetPassword() throws IOException {
        //创建一个用户列表
        ArrayList<User> userList = new ArrayList<>();
        //调用忘记密码方法
        forgetPassword(userList);
    }

    //将文件中的数据添加到集合
    // 读取文件内容并将其添加到userList中
private void readFile(ArrayList<User> userList) throws IOException {
        // 使用FileReader和BufferedReader读取文件
        BufferedReader br = new BufferedReader(new FileReader("user.txt"));
        // 读取每一行
        String line;
        while ((line = br.readLine()) != null) {
            // 根据-分割字符串
            String[] str = line.split("-");
            // 创建一个新的User对象
            User user = new User(str[0], str[1], str[2], str[3]);
            // 将user添加到userList中
            userList.add(user);
        }
        // 关闭BufferedReader
        br.close();

    }

    private void forgetPassword(ArrayList<User> userList) throws IOException {
        //调用读取文件方法
        readFile(userList);
        Scanner s = new Scanner(System.in);
        System.out.println("请输入您的用户名：");
        String username = s.nextLine();
        //检查用户名是否存在
        boolean flag1 = checkName(userList, username);
        if (!flag1) {
            System.out.println("您输入的用户名不存在，请重新输入或者注册！");
            return;
        }

        System.out.println("请输入您的手机号码：");
        String phone = s.nextLine();
        System.out.println("请输入您的身份证号码：");
        String idCard = s.nextLine();
        //检查手机号码和身份证号码的正确性
        boolean flag2 = checkInfo(userList, phone, idCard);
        if (!flag2) {
            System.out.println("您输入的信息有误，修改失败！");
            return;
        }
        String password;
        String againpassword;
        //验证密码
        while (true) {
            System.out.println("请输入您的新密码：");
            password = s.nextLine();
            System.out.println("请再次输入你的密码：");
            againpassword = s.nextLine();
            boolean flag = password.equals(againpassword);
            if (!flag) {
                System.out.println("您输入的两次密码不一致，请重新输入！");
            }else {
                break;
            }

        }
        System.out.println("修改成功！" +"你的新密码是："+password);
        //创建新用户
        User newUser = new User(username, password, phone, idCard);
        ArrayList<User> newUserList = new ArrayList<>();
        newUserList.add(newUser);
        //将新数据上传到文件
        updateFile(newUserList);

    }

    private void updateFile(ArrayList<User> userList) throws IOException {
        // 创建一个BufferedWriter对象，用于写入文件
        BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt"));
        // 遍历用户列表
        for (User user : userList) {
            // 将用户信息写入文件
            bw.write(user.toString());
            // 换行
            bw.newLine();
            // 刷新缓冲区
            bw.flush();
        }
        // 关闭BufferedWriter对象
        bw.close();
    }

    //检查手机号码和身份证号码的正确性
    private boolean checkInfo(ArrayList<User> userList, String phone, String idCard) {
        for (User user : userList) {
            if (user.getPhone().equals(phone) && user.getId_Card().equals(idCard)) {
                return true;
            }
        }
        return false;
    }

    //查看用户名是否存在
    private boolean checkName(ArrayList<User> userList, String username) {
        for (User user : userList) {
            if (user.getName().equals(username)) {

                return true;
            }
        }
        return false;
    }
}
